package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.PO.PropertyCloudServiceCostOrderInfoPO;
import com.itlong.cloud.POJO.VO.operate.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      云服务费任务书管理数据访问层接口
 * </desc>
 *
 * @createDate2020/11/30
 **/
@Mapper
@Repository
public interface IOperateAssignmentManageDao {


    /**
     * <desc>
     *      获取任务书产品列表
     * </desc>
     *
     * @param assignmentNumber 任务书id
     * @return 任务书产品列表
     * @Author Zhu.yj
     * @createDate  2020/11/30
     */
    OperateAssignmentInfoVO getAssignmentProductList(@Param("assignmentNumber") String assignmentNumber);

    /**
     * <desc>
     *      获取任务书列表
     * </desc>
     *
     * @param params 参数map
     * @return 任务书信息列表
     * @Author Zhu.yj
     * @createDate  2020/12/1
     */
    List<OperateAssignmentPageVO> getAssignmentList(Map<String, Object> params);

    /**
     * <desc>
     *      获取任务书列表数量
     * </desc>
     *
     * @param params 参数map
     * @return 列表数量
     * @Author Zhu.yj
     * @createDate  2020/12/1
     */
    Integer getAssignmentListCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取任务书产品与产品型号与产品编码关系列表
     * </desc>
     *
     * @param
     * @return 任务书、产品型号、产品编码关联信息
     * @Author Zhu.yj
     * @createDate  2020/12/1
     */
    List<OperateAssignmentProductVO> getAssignmentProductModelDetail();

    /**
     * <desc>
     *      获取任务书中产品对应的数量
     * </desc>
     *
     * @param assignmentNumber 任务书id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/12/2
     */
    List<OperateModelCodeVO> getAssignmentProductsCount(@Param("assignmentNumber") String assignmentNumber);

    /**
     * <desc>
     *      获取任务书详情
     * </desc>
     *
     * @param assignmentNumber 任务书id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/12/2
     */
    OperateAssignmentDetailVO getAssignmentDetail(@Param("assignmentNumber") String assignmentNumber);

    /**
     * <desc>
     *      获取任务书信息列表
     * </desc>
     *
     * @return 任务书id列表
     * @Author Zhu.yj
     * @createDate  2020/12/2
     */
    List<String> getAssignmentInfoList(@Param("firstSync") String firstSync);

    /**
     * <desc>
     *      获取要添加的任务书列表
     * </desc>
     *
     * @param assignmentNumberList 筛选的任务书范围
     * @return 要添加的任务书编号列表
     * @Author Zhu.yj
     * @createDate  2020/12/22
     */
    List<String> getAddAssignmentNumberList(@Param("list") List<String> assignmentNumberList);

    /**
     * <desc>
     *      根据任务书编号获取订单id列表
     * </desc>
     *
     * @param assignmentNumberList 任务书number列表
     * @return
     * @Author Zhu.yj
     * @createDate  2020/12/22
     */
    List<String> getOrderIdByAssignmentNumber(@Param("list") List<String> assignmentNumberList);

    /**
     * <desc>
     *      删除任务书订单
     * </desc>
     *
     * @param
     * @return
     * @Author Zhu.yj
     * @createDate  2020/12/22
     */
    Integer deleteAssignmentOrder(@Param("list") List<String> assignmentNumber);


    /**
     * <desc>
     *      删除订单数据
     * </desc>
     *
     * @param orderIdList 订单id列表
     * @return
     * @Author Zhu.yj
     * @createDate  2020/12/22
     */
    Integer deleteOrderData(@Param("list") List<String> orderIdList);

    /**
     * <desc>
     *      删除订单信息
     * </desc>
     *
     * @param orderIdList 订单id列表
     * @return
     * @Author Zhu.yj
     * @createDate  2020/12/22
     */
    Integer deleteOrderInfo(@Param("list") List<String> orderIdList);

    /**
     * <desc>
     *      获取任务书对应的订单
     * </desc>
     *
     * @param assignmentId 任务书id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/12/22
     */
    PropertyCloudServiceCostOrderInfoPO getAssignmentOrder(@Param("assignmentId") String assignmentId);

    /**
     * <desc>
     *      获取任务书下的云服务费订单
     * </desc>
     *
     * @param assignmentId 任务书id
     * @return
     * @Author Zhu.yj
     * @createDate  2021/3/25
     */
    Integer getAssignmentOrderCount(@Param("assignmentId") String assignmentId);

    /**
     * <desc>
     *      获取任务书列表作用于项目管理
     * </desc>
     *
     * @param params 参数map
     * @return 任务书信息列表
     * @Author juguang.S
     * @createDate  2021/03/05
     */
    List<OperateAssignmentPageVO> getAssignmentListByProject(Map<String, Object> params);

    /**
     * <desc>
     *      获取任务书列表数量作用于项目管理
     * </desc>
     *
     * @param params 参数map
     * @return 列表数量
     * @Author juguang.S
     * @createDate  2021/03/05
     */
    Integer getAssignmentListCountByProject(Map<String, Object> params);

}
